package org.huawei260.TiKu.B;
import java.util.Scanner;
/**
 * @Auther: qingle
 * @Date: 2024/10/27-17:50
 * @Description:
 * @version: 1.0
 */
public class B_2505_2023B_统计监控 {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);

			int m = sc.nextInt();
			int n = sc.nextInt();

			int[][] matrix = new int[m][n];
			for (int i = 0; i < m; i++) {
				for (int j = 0; j < n; j++) {
					matrix[i][j] = sc.nextInt();
				}
			}

			System.out.println(getResult(m, n, matrix));
		}

		public static int getResult(int m, int n, int[][] matrix) {
			// 记录需要打开的监控器数量
			int count = 0;

			// 上下左右四个方向的偏移量
			int[][] offsets = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};

			for (int x = 0; x < m; x++) {
				for (int y = 0; y < n; y++) {
					// 如果元素值为1，对应位置的监控器就要打开
					if (matrix[x][y] == 1) {
						count++;
						continue;
					}

					// 如果元素值为0，则需要进一步检查其上下左右4个位置，只要这四个位置有一个元素值为1，则当前位置的监控器需要打开
					for (int[] offset : offsets) {
						int newX = x + offset[0];
						int newY = y + offset[1];

						if (newX >= 0 && newX < m && newY >= 0 && newY < n && matrix[newX][newY] == 1) {
							count++;
							break;
						}
					}
				}
			}

			return count;
		}
	}